﻿using LdtJudge.DataEngine.Common.ElementConvertFormat;
using LdtJudge.DataEngine.Model.DataModel.CommonManageModel;
using System;
using System.Collections.Generic;
using System.Reflection;
using System.Text;

namespace LdtDataEngin.ModuleDetail.RegCommon.ConvertModeAnalysis
{
    ///<summary>
    /// 类名称  : FunctionConvert
    /// 功能    : 内容转换为函数
    /// 更新人  : ljx 
    ///</summary> 
    public class FunctionConvert : IConvertAnalysis
    {
        public string ccid { get; set; }
        /// <summary>
        /// 进行函数转换
        /// </summary>
        /// <param name="mode">转换配置对象</param>
        /// <param name="valuetext">被转换值</param>
        /// <param name="casetype">案件类型</param>
        /// <returns></returns>
        public IList<string> ConvertValue(ConvertMode mode, string valuetext, string casetype,string casecauseID)
        {
            List<string> result = new List<string>();
            // 获取反射的函数名称
            string funName = mode.CM_Method;
            Type t = typeof(ElementConvertCommonFun);//SpecialFunCollection 特殊处理函数集合类
            MethodInfo func = t.GetMethod(funName);//根据特殊处理函数的函数名反射得到特殊处理函数
            if (func != null)
            {
                // 执行方法
                List<object> parameters = new List<object>();
                if (!string.IsNullOrWhiteSpace(valuetext))
                {
                    parameters.AddRange(valuetext.Split(','));
                    parameters.Add(casetype);
                    parameters.Add(mode.CM_MethodParameter);
                    var reStr = func.Invoke(null, parameters.ToArray());
                    if(reStr!=null && !string.IsNullOrEmpty(reStr.ToString()))
                        result.Add(reStr.ToString());
                }
            }
            return result;
        }
    }
}
